package com.bachongLightNovel.works.service;

import com.bachongLightNovel.model.dto.audit.AuditNovelDto;
import com.bachongLightNovel.model.pojo.works.Novel;
import com.bachongLightNovel.model.pojo.works.NovelDetails;
import com.bachongLightNovel.model.vo.audit.AuditNovelVo;
import com.bachongLightNovel.model.vo.works.NovelRecordVo;
import com.bachongLightNovel.model.vo.works.NovelVo;

import java.util.List;

/**
 * @author vermouth
 */
public interface WorksNovelService {

    /**
     * 新建小说基本信息
     * @param novel:
     * @return Result
     * @author vermouth
     */
    void saveNovel(Novel novel);

    /**
     * 查询当前登录用户的小说集合
     * @param :
     * @return Result
     * @author vermouth
     */
    List<Novel> CurrentUserList();

    /**
     * 根据小说id获取小说的基本信息
     * @param id:
     * @return Result
     * @author vermouth
     */
    NovelVo getNovelById(Long id);

    /**
     * 新增对应小说的小说章节
     * @param novelDetails:
     * @return Result
     * @author vermouth
     */
    void saveNovelDetail(NovelDetails novelDetails);

    /**
     * 删除小说章节
     * @param novelDetails:
     * @return Result
     * @author vermouth
     */
    void removeNovelDetail(NovelDetails novelDetails);

    /**
     * 新增小说章节内容
     * @param novelDetails:
     * @return Result
     * @author vermouth
     */
    void saveDetailContent(NovelDetails novelDetails);

    /**
     * 根据小说章节id获取小说章节内容
     * @param detailId:
     * @return Result
     * @author vermouth
     */
    NovelDetails getDetailContent(Long detailId);

    /**
     * 根据小说id删除小说
     * @param novelId:
     * @return Result
     * @author vermouth
     */
    void removeNovel(Long novelId);

    /**
     * 修改小说发布状态
     * @param novelId:
     * @param status:
     * @return Result
     * @author vermouth
     */
    void updateNovelStatus(Long novelId,Short status);

    /**
     * 获取当前用户小说提交数据
     * @param :
     * @return Result
     * @author vermouth
     */
    List<NovelRecordVo> getCurrentRecord();

    /**
     * 获取所有待审核状态的小说列表(status==1)
     * @return List<AuditNovelVo>
     */
    List<AuditNovelVo> getAudits();

    /**
     * 设置审核状态
     * @param dto
     * @return
     */
    boolean setAuditStatus(AuditNovelDto dto);

    /**
     * 根据小说名获取小说id
     * @param novelName :
     * @return Long
     */
    List<Long> getNovelIdByNovelName(String novelName);

    /**
     * 根据小说id获取小说名
     * @param novelId :
     * @return String
     */
    String getNovelNameById(Long novelId);
}
